<?php

class Solicitudes_PreseleccionparesController extends Zend_Controller_Action
{
	private $nav;
	private $infoPrograma;
	private $codproceso;
	private $datosproceso;
	private $codestado;
	
	
    public function init() {
        $sesionProceso = new Zend_Session_Namespace("PROCESO");
        
        if (isset($sesionProceso->codproceso)){
    		$this->codproceso = $sesionProceso->codproceso;
    		$Proceso = new Solicitudes_Model_DetalleSolicitud();
            $this->datosproceso = $Proceso->cargardatosProceso($this->codproceso);
    		
    		$Programa = new Solicitudes_Model_DetalleSolicitud();
    		$this->view->infoPrograma = $Programa->cargardatosPrograma($this->datosproceso["codprograma"]);
    		$this->view->infoPrograma["codproceso"] = $this->codproceso;
    		$this->view->infoPrograma["codsolicitud"] = $this->datosproceso["codsolicitud"];
    		
            $this->view->extensiones = $Programa->cargardatosPrograma("","",$this->view->infoPrograma["codprograma"]);
    	    
    	    if ($this->view->infoPrograma["extension"]==1){
    	        if (!empty($this->view->infoPrograma["pro_codprograma"])){
    	            $this->view->programaextiende = $Programa->cargardatosPrograma($this->view->infoPrograma["pro_codprograma"]);
    	        }
    	    }
        }
//        $this->codestado =  $Programa->getEstadoProceso($sesionProceso->codproceso);
    	
    	$this->nav = new App_Util_Navegacion();
		$this->nav->agregar_navegacion("Lista de solicitudes", "/solicitudes/index/lista","Lista de solicitudes");
		
		//Resumen Informacion del programa (va en todos los actions)
		//$this->instituciones = new Instituciones_Model_Instituciones();
		//$infoinstitucion= $this->instituciones->cargardatosInfo($codinstitucion);
		//$this->view->infoInstitucion=$infoinstitucion;
    }

    public function indexAction() {
         $this->nav->agregar_navegacion("Pares preseleccionados","","Pares preseleccionados");
         $this->view->nav = $this->nav;
		        
        if($this->getRequest()->isGet()) {
            $datos = $this->_getAllParams();
            if (isset($datos["Msg"])){
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            }
            if (isset($datos["errorMsg"])){
                $this->view->priorityMessenger($datos["errorMsg"], "error");
            }
         }
        $paresProcesoService = new Visitas_Model_ParesProceso();
        $this->view->datos_usuarios = $paresProcesoService->getListaParesPropuestos($this->codproceso);
    }
       
    public function seleccionarparesAction() {
         $this->nav->agregar_navegacion("Pares preseleccionados","/solicitudes/preseleccionpares/index","Pares preseleccionados");
         $this->nav->agregar_navegacion("Preselección de pares","","");
         $this->view->nav = $this->nav;
        
    	// Búsqueda personalizada
		$this->view->autoCompleteUbicacion1 = new App_Util_AutoCompletar("/generales/ubicacion/autolista","ubicacion1");
		$this->view->autoCompleteUbicacion2 = new App_Util_AutoCompletar("/generales/ubicacion/autolista","ubicacion2");
		
        $ServiceAreas = new Generales_Model_Areas();
        $AreasConocimiento = $ServiceAreas->getarrayAreas(-3);
        
        $ServiceNiveles = new Generales_Model_Niveles();
        $NivelesAcademicos = $ServiceNiveles->getarrayNiveles();
        
        $form = new Usuarios_Form_BusquedaPersonalizada(array("NivelesAcademicos"=>$NivelesAcademicos,
        											   "AreasConocimiento"=>$AreasConocimiento));
        $form->setAction ( $this->view->baseUrl("/solicitudes/preseleccionpares/busqueda") );
        $form->recoverFromRedirect();
        
        if($this->getRequest()->isGet()) {
            $datos = $this->_getAllParams();
            if (isset($datos["errorMsg"])){
                if (isset($datos["_key"])){
                    unset($datos["_key"]);
                }
                if (isset($datos["errorMsg"])){
                    $this->view->priorityMessenger($datos["errorMsg"], "error");
                }
            }else{
	            unset($datos["module"]);
	            unset($datos["controller"]);
	            unset($datos["action"]);
	            unset($datos["_key"]);
	            if (isset($datos["fechaformaciond"])){
	                $datos["fechaformaciond"]= urldecode($datos["fechaformaciond"]);
	            }
	            if (isset($datos["fechaformacionh"])){
	                $datos["fechaformacionh"]= urldecode($datos["fechaformacionh"]);
	            }
		        $form->populate($datos);
            }
        }
        $this->view->form = $form;
        
	    // obtenemos la página actual
	    $page = $this->_getParam('page', 1);
	    // número de registros a mostrar por página
	    $registros_pagina = 15;
	    // número máximo de páginas a mostrar en el paginador
	    $rango_paginas = 15;
        
	    $datos["desde"] = $rango_paginas;
	    $datos["pag"] = $page;
	    
        $usuarios = new Usuarios_Model_Usuarios ();
        $this->view->datos_pares = $usuarios->getSelectUsuariosPAR($datos);
        $cantidad = $usuarios->getSelectUsuariosPAR($datos,true);
        $total_pares = intval($cantidad[0]["cantidad"])-15;
        
	    $paginador = Zend_Paginator::factory($total_pares);
	    $paginador->setItemCountPerPage($registros_pagina)
	              ->setCurrentPageNumber($page)
	              ->setPageRange($rango_paginas);
	    $this->view->datos_usuarios = $paginador;
	    
	    if (isset($datos)){
	        $datos["page"] = "";
	        $this->view->param_busqueda = $datos;
	    }
        
    }

    public function busquedaAction() {
        $ServiceAreas = new Generales_Model_Areas();
        $AreasConocimiento = $ServiceAreas->getarrayAreas(-3);
        
        $ServiceNiveles = new Generales_Model_Niveles();
        $NivelesAcademicos = $ServiceNiveles->getarrayNiveles();
        
        $form = new Usuarios_Form_BusquedaPersonalizada(array("NivelesAcademicos"=>$NivelesAcademicos,
        											   "AreasConocimiento"=>$AreasConocimiento));
        if ($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
	        $datos = $form->getValues ();
	        unset($datos["btnSubmit"]);
	         if (!empty($datos["codubicacion1"])){
		         $ubicacion= new Generales_Model_Ubicaciongeografica();
			     $datosubicacion1= $ubicacion->cargarDatos($datos["codubicacion1"]);
			     $datos["ubicacion1"]=$datosubicacion1["ubicacion"];
	         }
	         if (!empty($datos["codubicacion2"])){
		         $ubicacion= new Generales_Model_Ubicaciongeografica();
			     $datosubicacion2= $ubicacion->cargarDatos($datos["codubicacion2"]);
			     $datos["ubicacion2"]=$datosubicacion2["ubicacion"];
	         }
        }
        foreach($datos as $key => $valor){
            if (empty($valor)){
                unset($datos[$key]);
            }
            if ($key=="fechaformaciond" || $key=="fechaformacionh"){
                $datos[$key]= urlencode($datos[$key]);
            }
        }
        $this->_helper->redirector("seleccionarpares", null, null, App_Util_SafeUrl::encriptar($datos, false));
    }
    
    public function asignarseleccionAction(){
        $error = false;
        $param = array();
        
        if( $this->getRequest()->isPost() ) {
	        $principales = $this->_getParam("principales", array());
	        $coordinador = $this->_getParam("coordinador");
			$mustSave = true;
			
			 $datos = $this->getRequest()->getPost();
			 $seleccionados = array();
			 foreach ($datos as $key => $value) {
			     if (substr($key,0,2)=="p_"){
			         $seleccionados[substr($key,2)]=$value;
			     }
			 }
			 $array_usuarios = array_keys($seleccionados);

			try {
				if (is_null($coordinador)) {
					throw new Exception("Debe seleccionar un coordinador.");
				}
				 
				if (count($seleccionados)==0) {
					throw new Exception("Debe seleccionar por lo menos un par.");
				}
				
			    if (count($principales)==0) {
					throw new Exception("Debe seleccionar por lo menos un par principal.");
				}
				if (!in_array($coordinador, $array_usuarios)) {
					throw new Exception("El coordinador, debe ser alguno de los pares seleccionados.");
				}
				
			} catch (Exception $e) {
//			    echo $this->view->errorMsg = $e->getMessage();
			    $param["errorMsg"] = $e->getMessage();
			    $mustSave = false;
			    $error = true;
			}
			
        	try {
				if($mustSave) {
				    $paresPropuestosService = new Visitas_Model_ParesProceso();
				    $paresPropuestosService->asignarParesPropuestos($this->codproceso,$seleccionados,$coordinador,$principales);
//    				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
    				$param["Msg"] = "Los datos se han guardado correctamente";
				}
				
			} catch (Exception $e) {
//				$this->view->priorityMessenger($e->getMessage(), "error");
				$param["errorMsg"] = $e->getMessage();
				$error = true;
			}
        }
        if ($error){
            $this->_helper->redirector("seleccionarpares",null, null, App_Util_SafeUrl::encriptar($param, false));
        }else{
            $this->_helper->redirector("index",null, null, App_Util_SafeUrl::encriptar($param, false));
        }
    }
    
    public function desasignarseleccionAction(){
        $param = array();
        
        if( $this->getRequest()->isPost() ) {
	        $seleccionados = $this->_getParam("propuestos", array());
			$mustSave = true;
			try {
				if (count($seleccionados)==0) {
					throw new Exception("Debe seleccionar por lo menos un par.");
				}
				
			} catch (Exception $e) {
			    $param["errorMsg"] = $e->getMessage();
			    $mustSave = false;
			}
			
        	try {
				if($mustSave) {
				    $paresPropuestosService = new Visitas_Model_ParesProceso();
				    $paresPropuestosService->desasignarParesPropuestos($this->codproceso,$seleccionados);
    				$param["Msg"] = "Los datos se han guardado correctamente";
				}
				
			} catch (Exception $e) {
				$param["errorMsg"] = $e->getMessage();
			}
        }
        $this->_helper->redirector("index",null, null, App_Util_SafeUrl::encriptar($param, false));
    }
    
    public function historicovisitasparAction(){
        $UsuariosService = new Usuarios_Model_Usuarios();
        $codusuario = $this->_getParam("codusuario");
        $datos_usuarios = $UsuariosService->cargardatos($codusuario);
        $this->view->placeholder("titulo")->set("Histórico de visitas del par :: {$datos_usuarios["nombres"]} {$datos_usuarios["apellidos"]}");
        $this->_readonly = true;
		$this->_helper->layout()->setLayout("popup");
        $datos = array();
        
        $paresPropuestosService = new Visitas_Model_ParesProceso();
        $this->view->datos_visita = $paresPropuestosService->getHistoricoVisitasPar($codusuario);
    }
    
}

